package cmd;

public class Test {
    //函数式接口：用于声明方法   
    interface Person {
        void say();
    }
    interface Person2 {
        int custom(int i, int j);
    }

    //客户端：调用接口方法，可以自定义传入参数    
    public static void test(Person person) {

        //...        
        person.say();
    }
    public static void test2(Person2 person2) {
        int i = 10;
        int j = 5;
        //...       
        System.out.println(person2.custom(i, j));
    }

    //测试
    public static void main(String[] args) {
        //匿名内部类      
        test(new Person() {
            @Override
            public void say() {
                System.out.println("*********");
            }
        });
        

        //lambada表达式：提供方法实现方式       
        test(() -> {
            System.out.println("**************");
        });



        test2((x, y) -> x + y);
        test2((x, y) -> x - y);
//        test(()->prif());
//        test(()->prif(2));
        prif();
        prif(2);
        test2((x,y) -> x * y+x );

    }

    public static void  prif(){

        System.out.println("lambada测试");
    }
    public static void  prif(int i){

        System.err.println("lambada测试 "+i);
    }


}
